Composition API 教程
1. 概述
Composition API 是 Vue 3 引入的一种新的 API 风格,旨在解决 Vue 2 中 Options API 在处理复杂逻辑时的一些限制。Composition API 允许开发者将逻辑相关的代码组织在一起,提高了代码的可读性和可维护性。
1.1 为什么使用 Composition API?
- 逻辑复用:Composition API 允许你将逻辑相关的代码封装成可复用的函数,而不是依赖于 mixins 或高阶组件。
- 更好的类型推断:Composition API 与 TypeScript 结合使用时,提供了更好的类型推断。
- 更好的代码组织:通过将逻辑相关的代码放在一起,使得代码更易于理解和维护。
2. 基本概念
2.1 setup 函数
setup 函数是 Composition API 的入口点。它会在组件创建之前执行,并返回一个对象,该对象中的属性将暴露给模板和其他选项。
<template>
<div>{{ message }}</div>
</template>
<script>
import { ref } from 'vue';
export default {
setup() {
const message = ref('Hello, Vue 3!');
return {
message
};
}
};
</script>
2.2 响应式数据
在 Composition API 中,我们使用 ref 和 reactive 来创建响应式数据。
ref:用于创建一个响应式的基本类型数据(如字符串、数字等)。reactive:用于创建一个响应式的对象。
<template>
<div>
<p>{{ count }}</p>
<button @click="increment">Increment</button>
</div>
</template>
<script>
import { ref } from 'vue';
export default {
setup() {
const count = ref(0);
function increment() {
count.value++;
}
return {
count,
increment
};
}
};
</script>
2.3 计算属性
使用 computed 函数可以创建计算属性。
<template>
<div>
<p>{{ fullName }}</p>
</div>
</template>
<script>
import { ref, computed } from 'vue';
export default {
setup() {
const firstName = ref('John');
const lastName = ref('Doe');
const fullName = computed(() => `${firstName.value} ${lastName.value}`);
return {
fullName
};
}
};
</script>
2.4 侦听器
使用 watch 函数可以监听响应式数据的变化。
<template>
<div>
<input v-model="message" placeholder="Type something" />
<p>{{ message }}</p>
</div>
</template>
<script>
import { ref, watch } from 'vue';
export default {
setup() {
const message = ref('');
watch(message, (newVal, oldVal) => {
console.log(`Message changed from ${oldVal} to ${newVal}`);
});
return {
message
};
}
};
</script>
3. 实践练习
3.1 创建一个简单的计数器
使用 Composition API 创建一个简单的计数器组件,包含增加和减少按钮。
<template>
<div>
<p>{{ count }}</p>
<button @click="increment">Increment</button>
<button @click="decrement">Decrement</button>
</div>
</template>
<script>
import { ref } from 'vue';
export default {
setup() {
const count = ref(0);
function increment() {
count.value++;
}
function decrement() {
count.value--;
}
return {
count,
increment,
decrement
};
}
};
</script>
3.2 创建一个响应式表单
创建一个包含输入框和提交按钮的表单,使用 Composition API 管理表单数据。
<template>
<div>
<input v-model="name" placeholder="Enter your name" />
<input v-model="email" placeholder="Enter your email" />
<button @click="submitForm">Submit</button>
</div>
</template>
<script>
import { ref } from 'vue';
export default {
setup() {
const name = ref('');
const email = ref('');
function submitForm() {
console.log(`Name: ${name.value}, Email: ${email.value}`);
}
return {
name,
email,
submitForm
};
}
};
</script>
4. 总结
Composition API 是 Vue 3 中一个强大的工具,它提供了更灵活、更强大的方式来组织和复用代码。通过本教程,你应该已经掌握了 Composition API 的基本概念和使用方法。接下来,你可以尝试在实际项目中应用这些知识,进一步提升你的 Vue 开发技能。
5. 进阶学习
- 深入学习
reactive和ref的区别:了解何时使用reactive和ref,以及它们的优缺点。 - 探索
watchEffect:学习如何使用watchEffect来自动追踪依赖并执行副作用。 - 使用
provide和inject:了解如何在 Composition API 中使用provide和inject进行组件间的数据传递。
通过不断实践和学习,你将能够更好地掌握 Composition API,并在 Vue 3 项目中发挥其强大的功能。